$(function () {
    // 1- 首页数据渲染 
    // 2- 分页 
    // 3- 添加商品   
  
    var currentPage = 1; //当前页 
    var pageSize = 3; //每页数据条数 
    // 1- 首页数据渲染 
    // ajax取数据 + 模板引擎 
    function render () {
      $.ajax({
        type: 'get',
        url: '/product/queryProductDetailList',
        data: {
          page: currentPage,
          // pageSize:pageSize
          pageSize
        },
        dataType: 'json',
        success: function (res) {
          console.log(res);
          $('tbody').html(template('tmp', res));
          // 根据真实的数据总数 ，来生成分页 
          setPage(res.total);
        }
      })
    }
    render();
  
    // 2-分页
    function setPage (total) {
      $("#paginator").bootstrapPaginator({
        bootstrapMajorVersion: 3,//默认是2，如果是bootstrap3版本，这个参数必填
        currentPage: currentPage,// 设置高度页码 
        totalPages: Math.ceil(total / pageSize),//总页数 生成分页标签的个数    
        onPageClicked: function (event, originalEvent, type, page) {
          //为按钮绑定点击事件 page:当前点击的按钮值
          // 改变当前页取值 
          currentPage = page;
          // 重新渲染
          render();
        }
      });
    }
  
    // 3-下拉列表填充 
    // ajax取数据 + 模板引擎渲染
    $.ajax({
      type: 'get',
      url: '/category/querySecondCategoryPaging',
      data: {
        page: 1,
        pageSize: 100
      },
      dataType: 'json',
      success: function (res) {
        console.log(res);
        $('.cate-two-list').html(template('tmp-two', res));
      }
    })
  
    // 4-下拉列表选中
    // 1-点击按钮，获取a标签对应文字，赋值给按钮文本
    // 2-获取a标签对应id， 赋值给隐藏域 
    $('.cate-two-list').on('click', 'a', function () {
      $('.cate-btn').text($(this).text());
      $('#brandId').val($(this).data('id'));
      // 下拉列表选中后，恢复下拉列表状态了 
      $('.form-add').data('bootstrapValidator').updateStatus('brandId', 'VALID');
    })
  
    //5-图片上传  
    // 要求： 
    // 上传3张图片， 只保留最近上传的三张图片 
    // 图片预览 
    var picArr = [];
  
    $("#file").fileupload({
      dataType: "json",
      //e：事件对象
      //data：图片上传后的对象，通过data.result.picAddr可以获取上传后的图片地址
      done: function (e, data) {
        console.log(data.result);
        var img = data.result; // 存放当前图片的信息
        // 将当前上传完成的图片 ，添加到picArr 中  
        // 数组： 前添加  unshift() 前删除： shift()
        // 数组： 后添加：push()    后删除： pop()
        picArr.unshift(img);
        // 图片预览
        // append();  在盒子内部追加子元素 
        // prepend(); 在盒子内部的前面添加子元素  
        // after();   在盒子后面添加兄弟元素
        // before();   在盒子前面添加兄弟元素       
        $('.img-box').prepend('<img src="' + img.picAddr + '" alt="" height="60">');
  
        // 保留最近上传的三张图片 
        if (picArr.length > 3) {
          // 删除数组最后一个元素 
          picArr.pop();
          // 删除img-box中最后一个图片img 
          // empty(); 清空元素内部 
          // remove(); 删除盒子自己 
          $('.img-box img:last-child').remove();
        }
  
        // 如果图片数据合理， 就把图片地址 赋值给隐藏域 
        if (picArr.length == 3) {
          $('#picArr').val(JSON.stringify(picArr));
          // 恢复图片校验状态 
          $('.form-add').data('bootstrapValidator').updateStatus('picArr', 'VALID');
        }
  
        console.log('picArr:', picArr);
  
  
      }
    });
  
    // 6-表单非空校验
    //使用表单校验插件
    $('.form-add').bootstrapValidator({
      //1. 指定不校验的类型，默认为[':disabled', ':hidden', ':not(:visible)'],可以不设置
      excluded: [':disabled'],
  
      //2. 指定校验时的图标显示，默认是bootstrap风格
      feedbackIcons: {
        valid: 'glyphicon glyphicon-ok',
        invalid: 'glyphicon glyphicon-remove',
        validating: 'glyphicon glyphicon-refresh'
      },
  
      //3. 指定校验字段
      fields: {
        //校验用户名，对应name表单的name属性
        brandId: {
          validators: {
            //不能为空
            notEmpty: {
              message: '请选择二级分类'
            }
          }
        },
        // 商品名称
        proName: {
          validators: {
            //不能为空
            notEmpty: {
              message: '请输入商品名称'
            }
          }
        },
        // 商品描述
        proDesc: {
          validators: {
            //不能为空
            notEmpty: {
              message: '请输入商品描述'
            }
          }
        },
        // 商品库存
        num: {
          validators: {
            //不能为空
            notEmpty: {
              message: '请输入商品库存'
            },
            //正则校验
            regexp: {
              regexp: /^[1-9]\d*$/,
              message: '库存必须是非0开头的数组'
            }
          }
        },
        // 商品尺码
        size: {
          validators: {
            //不能为空
            notEmpty: {
              message: '请输入商品尺码'
            },
            //正则校验
            regexp: {
              regexp: /^[1-9]\d-[1-9]\d$/,
              message: '尺码必须是：xx-xx, x数字'
            }
          }
        },
        // 商品原价
        oldPrice: {
          validators: {
            //不能为空
            notEmpty: {
              message: '请输入商品原价'
            }
          }
        },
        // 商品现价
        price: {
          validators: {
            //不能为空
            notEmpty: {
              message: '请输入商品现价'
            }
          }
        },
        // 商品图片
        picArr: {
          validators: {
            //不能为空
            notEmpty: {
              message: '请上传3张图片'
            }
          }
        }
      }
  
    });
  
    // 7-手动恢复 图片 和下拉列表校验状态
    // 1- 下拉列表选中后，恢复下拉列表状态了 
    // 2- 当picArr.length == 3 时， 恢复图片校验状态 
  
  
    // 8-添加商品到服务器
    // 1 - 点击提交按钮，在表单数据校验合理请情况，向后发送请求，添加商品到服务器
    // 2 - 添加完成后台， 页面重新渲染 ， 隐藏模态框，表单重置 ， 手动恢复图片 和按钮的样式
    $('.form-add').on('success.form.bv', function (e) {
      e.preventDefault();
      $.ajax({
        type: 'post',
        url: '/product/addProduct',
        data: $('.form-add').serialize(),
        dataType: 'json',
        success: function (res) {
          console.log(res);
          // 页面重新渲染 
          render();
          // 隐藏模态框
          $('.modal-add').modal('hide');
          // 表单重置 
          $('.form-add').data('bootstrapValidator').resetForm(true);
          // 手动恢复图片 和按钮的样式
          $('.cate-btn').text('请选择二级分类');
          // 清空图片 
          $('.img-box').empty();
          // 重置数据, 防止上传添加图片数据，影响下次图片添加
          picArr = [];
        }
      })
    })
  });